package com.dhecp.project.purchase.service;

import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.purchase.domain.OfflinePayment;

public interface OfflinePaymentService {

    /**
     * 查询前一单NID、BID
     * @param nid 必要参数：当前 单据编码
     * @return AjaxResult (data.nid 前一单NID， data.bid 前一单BID)
     * @author DH-Xxj
     * @throws Exception
     */
    AjaxResult queryLastNid(Map<String, Object> params) throws Exception;

    /**
     * 查询后一单NID、BID
     * @param nid 必要参数：当前 单据编码
     * @return AjaxResult (data.nid 后一单NID， data.bid 后一单BID)
     * @author DH-Xxj
     * @throws Exception
     */
    AjaxResult queryNextNid(Map<String, Object> params) throws Exception;

    /**
     * 查询指定单nid的首记录
     * @param nid 必要参数：当前 单据编码
     * @return OfflinePayment
     * @throws Exception
     * @author DH-Xxj
     */
    OfflinePayment queryFirstRecord(Map<String, Object> params) throws Exception;

    /**
     * 查询指定单nid的整单录
     * @param nid 必要参数：当前 单据编码
     * @return List - OfflinePayment
     * @throws Exception
     * @author DH-Xxj
     */
    List<OfflinePayment> queryListByNid(Map<String, Object> params) throws Exception;

    /**
     * 查询
     * @param params
     * @return List - OfflinePayment
     * @throws Exception
     * @author DH-Xxj
     */
    List<OfflinePayment> queryList(Map<String, Object> params) throws Exception;

    /**
     * 分组（整单）查询
     * @param params
     * @return List - OfflinePayment
     * @throws Exception
     * @author DH-Xxj
     */
    List<OfflinePayment> queryGroupList(Map<String, Object> params) throws Exception;

    /**
     * 保存
     * @param moduleTable 必要参数：功能唯一标识
     * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
     * @param infoItems 必要参数：对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult saveData(Map<String, Object> params);

    /**
     * 删除
     * @param infoItems 必要参数：对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult deleteData(Map<String, Object> params);

    /**
     * 修改删除标志（预留）
     * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid 和 deleted）
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult updateDeleted(Map<String, Object> params);

    /**
     * 流转  —— 添加流程任务、修改流程状态及生效标志
     * @param tableDataId 必要参数：单据编码（nid）
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult updateFlowGo(Map<String, Object> params);

    /**
     * 退回  —— 添加流程任务、修改流程状态及生效标志
     * @param tableDataId 必要参数：单据编码（nid）
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult updateFlowBack(Map<String, Object> params);

}
